const joi = require("joi");
const { query } = require("express");

/**
 * string() 值必须是字符串
 * alphanum() 值只能是包含 a-zA-Z0-9 的字符串
 * min(length) 最小长度
 * max(length) 最大长度
 * required() 值是必填项，不能为 undefined
 * pattern(正则表达式) 值必须符合正则表达式的规则
 */
const username = joi.string().alphanum().min(1).max(10).required();

const password = joi.string().pattern(/^[\S]{6,12}$/);

const id = joi.number().integer().min(1).required()

const nickname = joi.string().required()

const email = joi.string().email().required()

// // dataUri() 指的是如下格式的字符串数据：
// 

const avatar = joi.string().dataUri().required()


exports.reg_login_schema = {
  // 表示对req.body 中的数据进行数据验证
  body: {
    username,
    password,
  },
};

exports.update_userinfo_schema = {
  body: {
    id,
    nickname,
    email,
  }
}

exports.update_password_schema = {
  body: {
    // 使用pawword这个规则，验证req.body.oldPwd
    oldPwd: password,
    newPwd: joi.not(joi.ref('oldPwd')).concat(password)
    // joi.ref('oldPwd') 表示newPwd的值必须和oldPwd的值保持一致，及规则要相同
    // joi.not(joi.ref('oldPwd')) 表示 newPwd 的值不能等于 oldPwd 的值
    //  .concat() 用于合并 joi.not(joi.ref('oldPwd')) 和 password 这两条验证规则
    
  }
}

exports.update_avatar_schema = {
  body: {
    avatar
  }
}



// 定义验证规则 包括 body(校验 req.body),query(校验req.query),params(校验req.params)

// body: {

// },
// query{

// },
// params{

// }

/**
 * string() 的值必须是字符串
 * alphanum() 值只能包含 a-zA-Z0-9的字符串
 * min(length) 最小长度
 * max(length) 最大长度
 * required() 值是必填项，不能为undefined
 * pattern(正则表达式）值必须符合正则表达式的规则
 *
 *
 * body {
 *  username: Joi.string().alphanum()
 * }
 */
